A network processor generally controls the flow of packets between a physical transmission medium, such as a physical layer portion of, e.g., an asynchronous transfer mode (ATM) network or synchronous optical network (SONET), and a switch fabric in a router or other type of packet switch. Such routers and switches generally include multiple network processors, e.g., arranged in the form of an array of line or port cards with one or more of the processors associated with each of the cards. Packets in the routing and switching context are also commonly referred to as PDUs, and are typically variable in size, comprised of multiple data blocks.
A problem that can arise in a conventional network processor relates to oversubscription of the processor input ports. An oversubscription condition occurs when the input data traffic arriving at the input ports exceeds the total data bandwidth processing capability of the network processor. Typically, network processors are designed for a certain amount of oversubscription, since designing the processors to accommodate the worst-case maximum or peak data traffic that might be received at any given point in time can unduly increase processor size, complexity, power consumption and cost.
As a simple example of an oversubscription condition, assume that a conventional network processor is designed to accommodate at most the simultaneous reception of four 100-block PDUs over a set of five input ports. It is possible that data bursting may result in a peak traffic situation in which 100-block PDUs are received simultaneously at each of the five input ports, such that the sum of the received data traffic over the five input ports represents 125% of the total data bandwidth that can be handled by the processor.
Generally, a conventional network processor deals with this type of oversubscription condition by randomly discarding data blocks as they are received at the input ports. This is problematic in that any PDU for which one or more data blocks are discarded is considered corrupted. With reference to the above example processor designed to accommodate simultaneous reception of four 100-block PDUs over a set of five input ports, random discarding of data blocks in conjunction with the peak traffic situation in which five 100-block PDUs are received will likely result in each of the five received PDUs discarding at least one data block and thus being considered corrupted.
Oversubscription can therefore result in the discarding of data blocks for an excessively large number of PDUs, with the resulting corrupted PDUs wasting network processor resources and limiting processor throughput and performance.
As indicated previously, reducing the number of discarded data blocks by designing the processor to handle peak traffic situations may be impractical due to the corresponding increases in processor size, complexity, power consumption and cost.
Accordingly, a need exists for an improved technique for dealing with oversubscription of input ports in a network processor.